package com.cy.store.mapper;

import com.cy.store.pojo.Address;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * @PROJECT_NAME: store
 * @DESCRIPTION:
 * @USER: 28416
 * @DATE: 2022/11/5 11:05
 *
 * 收货地址的持久层的接口
 */
public interface AddressMapper {
    /**
     *插入用户的收货地址数据
     * @param address
     * @return  收到映像的行数
     */

    Integer insert(Address address);

    /**
     * 通过uid查询收货地址数量
     * @param uid
     * @return  当前用户的收货地址总数
     */
    Integer countByUid(Integer uid);

    /**
     * 根据用户的id查询用户的收货数据
     * @param uid  用户id
     * @return 收货地址的数据
     */
    List<Address> findByUid(Integer uid);

    /**
     * 根据aid查询收货地址数据
     * @param aid  地址的aid
     * @return 返货收货地址的数据，如果没有找到则返回null值
     * 辅助 Integer updateNonDefault(Integer uid);方法
     */
    Address findByAid(Integer aid);

    /**
     * 根据用户的uid来修改用户的收货地址设置为非默认的收货地址
     * @param uid  用户的uid
     * @return  影响的行数
     *辅助 Integer updateNonDefault(Integer uid);方法
     */
     Integer updateNonDefault(Integer uid);

    /**
     * 根据用户的aid 来将用户选择的当前地址设置为默认的收货地址
     * @param aid
     * @param modifiedUser
     * @param modifiedTime
     * @return
     */
     Integer updateDefaultByAid(@Param("aid") Integer aid, @Param("modifiedUser") String modifiedUser, @Param("modifiedTime")Date modifiedTime);

    /**
     * 根据收货地址id删除收货地址的数据
     * @param aid
     * @return
     */
     Integer deleteByAid(Integer aid);

    /**
     * 根据用户uid来查询当前用户最后一次被修改的收货地址的数据
     * @param uid  用户id
     * @return  收货地址的数据
     */
     Address findLastModified(Integer uid);


}
